// Copyright (c) RealCoolEngineer. 2023. All rights reserved.
// Author: beiklive
// Date: 2023-09-28
#ifndef AREAEXAMPLE_SRC_ENGINE_GAMEENGINE_H_
#define AREAEXAMPLE_SRC_ENGINE_GAMEENGINE_H_

#include "Main.h"
#include "GameWindow.h"
#include "GameObjectManager.h"


// 游戏引擎基础类
class GameEngine {
public:
    GameEngine();
    ~GameEngine();

    void Start();


    // 游戏初始化
    void Initialize();

    // 游戏主循环
    bool IsRunning();

    // 处理用户输入
    void HandleInput();

    // 更新游戏逻辑
    void Update();

    // 执行物理模拟
    void SimulatePhysics();

    // 渲染游戏画面
    void Render();

    // 处理游戏事件
    void ProcessEvents();

    // 资源加载和卸载
    void LoadResources();
    void UnloadResources();
    void setGameState(GameState state){
        currentState = state;
    }

    GameState getGameState(){
        return currentState;
    }

    int GetFps(){
        return targetFPS;
    }
    // 切换游戏状态
    // void ChangeGameState(GameState newState);

private:
    int targetFPS{60};
    // 游戏状态
    GameState currentState;

    // 窗口/视口管理
    GameWindow *window;
    InputListener *inputListener;

    
    // // 渲染器
    // Renderer renderer;

    // // 物理引擎
    // PhysicsEngine physics;

    // // 输入管理器
    // InputManager input;

    // // 音频管理器
    // AudioManager audio;

    // // 游戏对象管理器
    // GameObjectManager gameObjectManager;
    // Entity *testSquare;
    // // 其他成员变量和方法根据需要添加
};



#endif  // AREAEXAMPLE_SRC_ENGINE_GAMEENGINE_H_


